package metier.sess;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import metier.entities.Abonnement;
import metier.entities.Catalogue_prix;
import metier.entities.StrategiePrix;


@Stateless(name="StrategiePrix")
public class StrategiePrixEJBImpl implements IStrategiePrixLocal{
	
	@PersistenceContext(unitName="PU_Cargaison")
	private EntityManager em;

	@Override
	public void addStrategiePrix(StrategiePrix s) {
		em.persist(s);
		
	}

	@Override
	public List<StrategiePrix> getAllStrategiePrix(Integer pid,Integer Type) {
		Query req;
		if(Type==1)
		req=em.createQuery("select sp from Catalogue_prix sp where sp.userType="+pid);
		else
	    req=em.createQuery("select sp from Abonnement sp where sp.userType="+pid);
		
        return req.getResultList();
	}
	

	@Override
	public StrategiePrix getStrategiePrix(Integer Id) {
		return em.find(StrategiePrix.class,Id);
	
	}

	@Override
	public void updateStrategiePrix(StrategiePrix sp) {
		em.merge(sp);
		
	}

	@Override
	public void deleteStrategiePrix(Integer Id) {
		em.remove(getStrategiePrix(Id));
		
	}

	@Override
	public List<StrategiePrix> getAllStrategiePrixActive(Integer pid,Integer Type) {
		Query req;
		if(Type==1)
		req=em.createQuery("select tc from Catalogue_prix tc where tc.Statut=true and tc.userType="+pid);
		else
		req=em.createQuery("select tc from Abonnement tc where tc.Statut=true and tc.userType="+pid);
		
			
        return req.getResultList();
	}
	
	
	@Override
	public List<Abonnement> listeAbonnementActive(Integer pid)
	{
		Query  req=em.createQuery("select sp from Abonnement sp where sp.Statut=true and  sp.userType="+pid);
		return req.getResultList();
	}
	
	
	@Override
	public StrategiePrix getCataloguePrix(Double Prix,Integer pid)
	{
		
		List<StrategiePrix> liste=  getAllStrategiePrixActive(pid,1);
		
		for(int i=0;i<liste.size();i++)
		{
			String[] l=((Catalogue_prix)liste.get(i)).getIntervalle_prix().split("-");
		
			if((Integer.parseInt(l[0])<=Prix) &&  (Integer.parseInt(l[1])>=Prix))
			{
				System.out.println("hiii");
				return liste.get(i);
			}
		}
		return null;
	}
	

}
